package one.stand.service;

import one.stand.model.ResultModel;
import one.stand.request.AppointmentRequest;
import one.stand.request.ProductsRequest;
import one.stand.request.ProductsTypeRequest;
import one.stand.response.AppointmentResponse;
import one.stand.response.ProductsResponse;
import one.stand.response.ProductsTypeResponse;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */
public interface ProductsService {

    /**
     * 根据公司ID查询预约管理中预约列表数和产品管理数
     */
    ResultModel<Map<String, Object>> getProductsCount(AppointmentRequest request);

    /**
     * 查询公司预约商品类型（下拉框显示）
     */
    ResultModel<List<ProductsTypeResponse>> selectProductsTypeList(ProductsTypeRequest request);

    /**
     * 分页查询公司预约商品类型
     */
    ResultModel<Map<String, Object>> selectProductsTypePage(ProductsTypeRequest request);

    /**
     * 查询公司预约商品类型（包含类型下的商品信息）
     */
    ResultModel<List<ProductsTypeResponse>> selectProductsType(ProductsTypeRequest request);

    /**
     * 新增/修改预约商品类型
     */
    ResultModel<Boolean> insertProductsType(ProductsTypeRequest request);

    /**
     * 删除预约商品类型
     */
    ResultModel<Boolean> delProductsType(ProductsTypeRequest request);

    /**
     * 上移/下移商品类型
     */
    ResultModel<Boolean> moveProductsType(ProductsTypeRequest request);

    /**
     * 分页查询公司预约商品信息
     */
    ResultModel<Map<String, Object>> selectProductsPage(ProductsRequest request);

    /**
     * 查询公司预约商品信息
     */
    ResultModel<ProductsResponse> getProductsInfo(ProductsRequest request);

    /**
     * 新增/修改预约商品的信息
     */
    ResultModel<Boolean> insertProducts(ProductsRequest request);

    /**
     * 删除预约商品的信息
     */
    ResultModel<Boolean> delProducts(ProductsRequest request);

    /**
     * 上移/下移预约商品
     */
    ResultModel<Boolean> moveProducts(ProductsRequest request);

    /**
     * 分页查询预约列表
     */
    ResultModel<Map<String, Object>> selectAppointmentPage(AppointmentRequest request);

    /**
     * 查询预约列表详情
     */
    ResultModel<AppointmentResponse> getAppointmentInfo(AppointmentRequest request);

    /**
     * 新增预约订单
     */
    ResultModel<Boolean> insertAppointment(AppointmentRequest request);

    /**
     * 修改预约订单状态
     */
    ResultModel<Boolean> updAppointmentState(AppointmentRequest request);
}
